
###############################################################################
cmake_minimum_required(VERSION 2.8)

#--- имя проекта совпадает с именем каталога проекта
get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME)

#--- имя главной цели. CXX значает, что проект на с++
project( ${PROJECT_NAME} CXX )

###############################################################################

#--- определяем состав исходных файлов библиотеки
FILE (GLOB MY_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/src/*)

#--- определяем пути для хэдэров
set (MY_HEADERS_PATH ${CMAKE_CURRENT_SOURCE_DIR}/include)

include_directories( ${MY_HEADERS_PATH}   )
###############################################################################

add_executable( ${PROJECT_NAME} ${MY_SOURCE} )

# обязательно после определения цели
set (BIN ${CMAKE_CURRENT_SOURCE_DIR}/product)
set (DLL ${CMAKE_CURRENT_SOURCE_DIR}/product)
set (LIB ${CMAKE_CURRENT_SOURCE_DIR}/product)

# сначала дефолтные 
set_target_properties( 
    ${PROJECT_NAME} 
    PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${LIB}
    PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${DLL}
    PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${BIN}
)

# теперь под каждую из возможных конфигураций 
foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} ) 
    string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG ) 
    set_target_properties( 
        ${PROJECT_NAME} 
        PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${LIB}
        PROPERTIES LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${DLL}
        PROPERTIES RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${BIN}
    ) 
endforeach()

###############################################################################


